#ifndef  _CURVE_PLAT_DIFF_H_
#define _CURCE_PLAT_DIFF_H_

#include  <stdio.h>
//#include "baseDef.h"
#include "ComData.h"


// 打印强制走调试串口 
extern SW_BOOL CURVE_PRINT_ALL;

// 定义曲线测试通道号，默认零通道
extern SW_UINT8 CurveChan; 



typedef enum
{
	NON = 0, ///< 无 不输出任何打印
	SYS_ERROR, ///< 系统错误
	RT_ERROR, ///< 运行错误
	KEY_WARN, ///< 关键警告
	NORMAL_WARN, ///< 一般警告
	DEBUG_NOTICE, ///< 一般调试信息
	DEBUG_INFO, ///< 调试信息
	DEBUG_ALL_DAV, ///< 所有调试信息 

	// 所有模块名称的个数
	ALL_DBG_LEVEL_NUMS ///< 这项的值正好是所有等级名的个数
}DEBUG_LEVEL_INDEX;

#define MOD_IPZOOM 0
#if 0
#ifndef CURVE_INFO
#define CURVE_INFO(format, args...)	                                                                                    		\
{                                                                                                                       		\
        printf("[CURVE]%s:%d:%s: " format, __FILE__, __LINE__, __FUNCTION__, ##args); 					                        \
}
#endif

#ifndef CURVE_ERROR
#define CURVE_ERROR(format, args...)	                                                                                		\
{                                                                                                                       		\
        printf("[CURVE]%s:%d:%s: " format, __FILE__, __LINE__, __FUNCTION__, ##args);	                                        \
}
#endif

#ifndef CURVE_PRINT
#define CURVE_PRINT(format, args...) printf("[IPZOOM][CURVE]" FONT_GREEN format FONT_NONE, ##args)
#endif
#endif

/* 平台相关控制 */
SW_BOOL CURVE_PLAT_CurveTestChanCheck(SW_UINT8 chan);
SW_INT32 CURVE_PLAT_InitJxThread(void);
SW_INT32 CURVE_PLAT_GetSensorType(void);
SW_INT32 CURVE_PLAT_GetLensType(void);
JX_DevType CURVE_PLAT_GetDeviceType(void);
SW_UINT8 CURVE_PLAT_WaitCurveCMD(void);
void CURVE_PLAT_Usleep(SW_INT32 us_time);
SW_INT32 CURVE_PLAT_LensParam(void);
void CURVE_PLAT_CurvePointer(void);


/* 曲线测试: 电机控制相关 */
SW_INT32 CURVE_MOTOR_GotoZoomFocusPos(SW_INT zoom, SW_INT focus);
SW_INT32 CURVE_MOTOR_GotoZoomPos(SW_INT step, SW_INT pos);
SW_INT32 CURVE_MOTOR_GotoFocusPos(SW_INT step, SW_INT pos);
SW_INT CURVE_MOTOR_GetZoomPos(void);
SW_INT CURVE_MOTOR_GetFocusPos(void);
SW_INT32 CURVE_MOTOR_StepMotorInit(void);

/* 曲线测试: 曝光控制相关 */
SW_BOOL CURVE_AE_GetSupportIris(void);
SW_INT16 CURVE_AE_GetMinIRIS(void);
SW_INT16 CURVE_AE_GetMaxIRIS(void);
SW_INT CURVE_AE_SetIRISValue(SW_INT16 pwm);
SW_INT16 CURVE_AE_GetCurIRIS(void);
SW_INT CURVE_AE_WaitAeFinish(void);

/* 曲线测试: 聚焦相关 */
SW_INT CURVE_AF_WaitAfFinish(void);

SW_INT CURVE_FLASH_Read(const SW_CHAR *pSection, const SW_CHAR *pKey, SW_INT16 *pValue, SW_UINT32 ValueLen);
SW_INT CURVE_FLASH_Write(const SW_CHAR *pSection, const SW_CHAR *pKey, const SW_INT16 *pValue, SW_UINT32 valueLen);
SW_RET CURVE_INI_Read(const SW_CHAR *pSection, const SW_CHAR *pKey, SW_INT16 *pValue);

/* 在线曲线校正 */
void CurveTestOnLine(SW_UINT8 chan);

/* 新增镜头配置 */ 
SW_INT32 LensParamConfig(void);

/* 多马达相关 */ 
SW_UINT8 CURVE_MULMOTOR_GetType(SW_UINT8 chan);
SW_INT32 CURVE_MULMOTOR_FocusCheck(SW_UINT8 chan, SW_INT16 *curveupper, SW_INT16 *curvelower);


#endif

